-
Notifications
You must be signed in to change notification settings - Fork 503
[immutable-arraybuffer] TypedArray internal operations #4551
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
[immutable-arraybuffer] TypedArray internal operations #4551
Conversation
With `sedi` being a portable `sed -i`, e.g. `sed -i '' "$@"` on BSD and `sed -i "$@"` on Linux: ```sh git grep -l 'testWith[A-Za-z]*TypedArrayConstructors[(].*, N.*' test/built-ins/ | \ xargs sedi -E 's#(testWith[A-Za-z]*TypedArrayConstructors[(].*), N([^a-zA-Z].*)#\1\2#' ```
With `sedi` being a portable `sed -i`, e.g. `sed -i '' "$@"` on BSD and `sed -i "$@"` on Linux: ```sh git grep -l 'testBigIntTypedArray[.]js' | \ xargs sedi 's#testBigIntTypedArray[.]js#testTypedArray.js#' ```
… a TA constructor and an argument factory
…uctors With `sedi` being a portable `sed -i`, e.g. `sed -i '' "$@"` on BSD and `sed -i "$@"` on Linux: ```sh git grep -l 'testWith[A-Za-z]*TypedArrayConstructors[(]' test/built-ins/ | \ while read f; do grep -qF detachArrayBuffer.js "$f" && continue grep -qF '.resize(' "$f" && continue taCtorAliases="$(sed -nE \ 's#testWith[A-Za-z]*TypedArrayConstructors[(] *(function[^(]*[(] *|[^a-zA-Z0-9_]*)([a-zA-Z0-9_]+).*#\2#p' \ "$f")" sedi -E ' s#(testWith[A-Za-z]*TypedArrayConstructors[(] *(function[^(]*[(] *|[(] *)[a-zA-Z0-9_]+)#\1, makeCtorArg#; t; s#(testWith[A-Za-z]*TypedArrayConstructors[(] *)([a-zA-Z0-9_]+)#\1(\2, makeCtorArg)#; t; '"$(printf '%s' "$taCtorAliases" | sed -E 's/(.*)/s#\\b\1[(]([0-9.]+n?|[[][^]]*[]])[)]#\1(makeCtorArg(\\1))#/')" \ "$f" done git diff --numstat -- test/built-ins/ | \ awk '{ print $NF }' | \ xargs grep -c '\bmakeCtorArg\b' | \ sed -n 's/:1$//p' | \ xargs sedi -E ' /makeCtorArg/,$ { s#^[}][)]#}, null, ["passthrough"])#; } /makeCtorArg/ { s#, makeCtorArg##; s#[(]([a-zA-Z0-9_]+)[)] =>#\1 =>#; } ' git diff --numstat -- test/built-ins/ | \ awk '{ print $NF }' | \ xargs grep -l '\bdefineProperty\b' | \ xargs sedi -E \ '/testWith[A-Za-z]*TypedArrayConstructors[(]/,$s#^[}][)]#}, null, ["passthrough"])#' ```
…rray method tests
…e contents With `sedi` being a portable `sed -i`, e.g. `sed -i '' "$@"` on BSD and `sed -i "$@"` on Linux: ```sh git grep -l 'testWith[A-Za-z]*TypedArrayConstructors[(]' \ test/built-ins/TypedArray/prototype/{copyWithin,fill,reverse,set,sort} | \ xargs sedi -E \ '/testWith[A-Za-z]*TypedArrayConstructors[(]/,$s#^[}][)]#}, null, null, ["immutable"])#' git grep -l 'testWith[A-Za-z]*TypedArrayConstructors[(]' \ test/built-ins/TypedArray/prototype | \ grep -E 'set-value-during-|predicate-call-changes-value|values-are-not-cached' | \ xargs sedi -E \ '/testWith[A-Za-z]*TypedArrayConstructors[(]/,$s#^[}][)]#}, null, null, ["immutable"])#' ```
…perties cannot be set when the backing buffer is immutable
…es are non-configurable and non-writable when the backing buffer is immutable
…es being defined are validated against descriptors for immutable properties
55e9cb7
to
795f516
Compare
var value1 = sample[1]; | ||
assert.compareArray([String(value0), String(value1)], ["42", "43"]); | ||
|
||
verifyProperty(sample, "0", { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Note that verifyProperty()
is based on various assumptions that don't work for typed arrays. For example, isWritable(new Uint8Array(8), "0")
is false
(incorrectly) and isWritable(new BigInt64Array(8), "0")
even results in SyntaxError: Cannot convert unlikelyValue to a BigInt.
The current version of the test seems to be lucky to pass despite the usage of verifyProperty()
, but it is probably better to avoid it (for typed arrays). Note that, for example, index-prop-desc.js
that is kind of mutable version of this test avoids verifyProperty()
for the mentioned reasons.
includes: [testTypedArray.js, compareArray.js, propertyHelper.js] | ||
---*/ | ||
|
||
testWithAllTypedArrayConstructors(function(TA, makeCtorArg) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Other tests in the same directory do not test BigInt
typed arrays i.e. use testWithTypedArrayConstructors
instead of testWithAllTypedArrayConstructors
(and contain a variant with testWithBigIntTypedArrayConstructors
in BigInt
sub-directory).
Includes #4545
Ref #4509